package com.weijianhuawen.wjblog.common.enums;

import com.weijianhuawen.wjblog.common.exception.BaseExceptionInterface;
import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * @version: java version 8
 * @Author: weijianhuawen
 * @description:
 * @date: 2024-10-15 12:09
 */
@Getter
@AllArgsConstructor
public enum ResponseCodeEnum implements BaseExceptionInterface {
    //通用错误异常码
    SYSTEM_ERROR("10000", "不小心分心了，正在努力恢复清醒中..."),
    //通用成功码
    SUCCESS("200", "成功"),

    //业务异常
    USER_ERROR("20000", "用户信息有误"),
    PARAM_NOT_VALID("30001", "参数传递格式错误或缺少参数"),

    //用户登录异常
    USERNAME_OR_PASSWORD_ERROR("1001", "账号或密码错误！"),
    LOGIN_FAIL("1011", "遇到异常，登录失败！"),
    USERNAME_NOT_FOUND("1111", "用户不存在"),
    OLD_PASSWORD_ERROR("1211", "旧密码验证失败"),

    // 用户
    USER_ALREADY_EXIST("1311", "该用户已经注册，请登录！"),
    USER_MAIL_OR_PHONE_OR_QQ_ALREADY_REGISTER("1312", "所填邮箱或手机号或QQ号已经被其他用户绑定，请重新填写信息！"),
    USER_DETAIL_NOT_EXIST("1313", "用户未注册个人信息模块，无法修改资料！"),
    USER_NOT_CONSISTENT("1314", "修改用户与登录用户不一致，请登录相一致的账号进行操作！"),
    QQID_FORMAT_ERROR("1315", "QQ号码格式错误！"),
    PHONE_NUMBER_FORMAT_ERROR("1316", "手机号格式错误！"),
    PHONE_NUMBER_VALIDATE_ERROR("1317", "手机号验证失败！"),
    PASSWORD_VALIDATE_ERROR("1318", "登录密码验证失败！"),
    USER_UNBIND_QQID("1319", "用户没有绑定QQ号！无需解绑！"),
    USER_UNBIND_PHONE("1320", "用户没有绑定手机号！无需解绑！"),
    USER_NOT_LOGIN("1321", "用户未登录，请先登录再进行操作！"),
    USER_MAIL_FORMAT_ERROR("1322", "用户未绑定邮箱或邮箱格式有误，请重新设置邮箱！"),
    USER_NAME_AND_ID_ERROR("1323", "所提供用户ID与用户名指向不一致！"),
    USER_ROLE_ALREADY_EXIST("1324", "该用户所对应角色已存在！"),
    USER_ROLE_NOT_EXIST("1325", "该用户的目标角色不存在或已删除！"),
    USER_ROLE_NUMBER_LIMIT("1326", "该用户的角色数量小于或等于1，无法进行操作！"),

    //资源访问异常
    USERNAME_ILLEGAL_RESOURSES("1101", "用户未登录，请先登录或注册！"),
    FORBIDDEN("1401", "用户权限不足，无法操作！"),

    //分类相关
    CATEGORY_NAME_IS_EXISTED("2011", "分类已存在"),
    NOT_EXIST_CATEGORY("2111", "分类不存在或已删除"),
    CATEGORY_BIND_ARTICLE("2311", "该分类已关联相关文章"),

    //文件相关
    UPLOAD_FILE_IS_NULL_ERROR("3001", "上传文件不能为空！"),
    UPLOAD_FILE_IS_PROBLEM_ERROR("3002", "上传被损毁！"),
    UPLOAD_FILE_UNKNOW_ERROR("3041", "文件上传未知错误"),

    //博客设置相关
    BLOG_SETTING_ADMIN_USER_NOT_FIND("60001", "博客设置相关数据请求异常"),

    //标签相关
    TAG_NAME_IS_EXISTED("2012", "标签已存在"),
    NOT_EXIST_TAG("2211", "标签不存在或已删除"),
    TAG_BIND_ARTICLE("2411", "该标签已关联相关文章"),

    // 文章相关
    NOT_EXIST_ARTICLE_ERROR("4011", "该id对应的文章不存在！"),

    // 必须设置相关
    NOT_EXIST_ADMIN_BLOG_SETTINGS("2333", "相关设置获取失败"),

    // 知识库相关
    NOT_EXIST_WIKI_ERROR("5011", "知识库已被删除或不存在！"),
    CATALOG_TITLE_IS_EMPTY("5021", "知识库目录结构中不允许标题为空！"),
    CATALOG_BIND_ILLEGAL_ARTICLE("5031", "该目录绑定的文章不存在或已删除！"),

    // 评论区相关
    QQ_ID_ILLEGAL("6001", "QQ号码格式错误！"),
    GET_QQ_INFO_FAIL("6002", "获取QQ信息失败！"),
    JSON_TRANSLATION_ERROR("6003", "JSON转换失败！"),
    COMMENT_NOT_ESIST("6004", "该评论不存在或已删除！"),

    // 评论敏感词相关
    COMMENT_CONTAIN_SENSITIVE_WORD("7001", "评论内容中包含敏感词，请重新编辑后再提交"),
    COMMENT_WAIT_EXAMINE("7011", "评论已提交, 等待博主审核通过"),

    // 账号状态相关
    START_OR_END_TIME_EXIST_NULL("8011", "设置的起始时间或结束时间格式不正确或存在空值！"),
    ACCOUNT_STATUS_NOT_EXIST("8012", "提交的用户状态不存在或重复操作！"),
    ;

    //异常码
    private String errorCode;
    //异常信息
    private String errorMessage;
}
